home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tm.d64 / wug.c (.txt) < prev   
Commodore BASIC  |  2007-02-04  |  9KB  |  246 lines

  1. 0 REM WUG BY JAMES HORN
  2. 1 REM COMPUSERVE ID: 74616,131
  3. 2 REM ARCADE TYPE GAME FOR C-64 WITH
  4. 3 REM   JOYSTICK(S)
  5. 5 GOTO500
  6. 10 IFPEEK(17153)AND16THEN70
  7. 20 SYS16896:IFPEEK(17152)<>42THEN40
  8. 30 SC=SC+5:PRINTTAB(22-LEN(STR$(SC)))SC;CHR$(145):ND=ND+1:IFND=NNTHEN290
  9. 40 F=INT(RND(1)*(24/BS-1)):POKE17166,48+(F+1)*BS*8:SYS16688
  10. 50 F=INT(RND(1)*(36/BS+1)):E=30+BS*F*8:F=EAND256:E=E-F:POKE17167,E
  11. 60 POKE17168,F/8:SYS16782:GOTO10
  12. 70 POKES+11,33:FORF=100TO20STEP-10:FORE=FTOF-10STEP-1:POKES+8,E:NEXT
  13. 80 FORE=F-10TOF-5:POKES+8,E:NEXTE,F:POKES+11,0:FORF=1TO2000:NEXT:POKEV+21,0
  14. 85 NM(CP)=NM(CP)-1:GOSUB140:IFNM(CP)=0THENGOSUB155:IFCP=PLTHENSC(CP)=SC:GOTO175
  15. 93 IFPL=1THEN450
  16. 95 SC(CP)=SC:ND(CP)=ND:CP=ABS(CP-3):SC=SC(CP):NN=NN(CP):ND=ND(CP):BS=BS(CP)
  17. 100 POKE648,4+(CP-1)*44:POKEV+24,(PEEK(V+24)AND15)OR(16+(CP-1)*176)
  18. 105 GOSUB170:IFNM(CP)=3THEN300
  19. 110 GOTO440
  20. 125 POKE214,7:PRINT:FORF=0TO6:PRINTTAB(15)Z$;CHR$(145):FORE=0TO300:NEXT
  21. 130 PRINTTAB(15)"         "CHR$(145):REM 9 SPACES
  22. 135 FORE=0TO300:NEXTE,F:RETURN
  23. 140 E=9:IFBS=4THENE=5
  24. 145 POKE214,E:PRINT:PRINTTAB(17)"     "CHR$(145):REM 5 SPACES
  25. 150 PRINTTAB(23-NM(CP)*2)LEFT$(C$,NM(CP)*2):RETURN
  26. 155 Z$="GAME OVER":GOSUB125:RETURN
  27. 160 Z$="PLAYER "+STR$(CP):GOSUB125:RETURN
  28. 165 Z$="GET READY":GOSUB125:RETURN
  29. 170 F=7+44*(CP-1):POKE16749,F:POKE16839,F:POKE16983,F:POKE16902,2-CP:RETURN
  30. 175 CP=0:IFSC(2)>HSTHENHS=SC(2):CP=2
  31. 178 IFSC(1)>HSTHENHS=SC(1):CP=1
  32. 181 IFCP=0THEN200
  33. 184 PRINTCHR$(147):PRINTTAB(13)"GREAT SCORE!":PRINT:PRINT:IFPL=1THEN188
  34. 186 PRINTTAB(15)"PLAYER"CP:PRINT
  35. 188 PRINT:PRINTTAB(16-LEN(STR$(HS))/2)"SCORE:"HS
  36. 189 POKE214,10:PRINT:HS$="":PRINTTAB(9)"ENTER YOUR INITIALS"
  37. 190 PRINT:PRINTTAB(8)"ERASE WITH THE '"CHR$(95)"' KEY":PRINT
  38. 191 PRINTTAB(8)"END BY PRESSING RETURN":POKE214,18:PRINT:FORF=1TO10:GETZ$:NEXT
  39. 192 PRINTCHR$(145)TAB(16)HS$"     ":REM 5 SPACES
  40. 194 GETZ$:IFZ$=""THEN194
  41. 195 IFZ$=CHR$(95)ANDLEN(HS$)>0THENHS$=LEFT$(HS$,LEN(HS$)-2):GOTO192
  42. 196 IFASC(Z$)=13THEN200
  43. 197 IFZ$<"A"ORZ$>"Z"THEN194
  44. 198 IFLEN(HS$)>4THEN194
  45. 199 HS$=HS$+Z$+" ":GOTO192
  46. 200 E=PEEK(V+23):PRINTCHR$(147):POKEV+24,(PEEK(V+24)AND15)OR16:POKE648,4
  47. 205 POKEV+21,1:FORF=1TO10:GETZ$:NEXT:IFHS=0THEN220
  48. 210 POKE214,6:PRINT:PRINTTAB(14)"HIGH SCORE":PRINT
  49. 215 PRINTTAB(16-LEN(STR$(HS))/2)HS$;HS
  50. 220 POKE214,19:PRINT:PRINTTAB(6)"PRESS: 'F1' FOR ONE PLAYER":PRINT
  51. 230 PRINTTAB(13)"'F3' FOR TWO PLAYERS"
  52. 240 E=ABS(E-1):POKEV+21,0:POKEV+23,E:POKEV+29,E:POKEV,152+12*(1-E)
  53. 250 POKEV+21,1:POKES+4,17:POKE2,5:F=0
  54. 255 GETZ$:IFZ$>CHR$(132)ANDZ$<CHR$(135)THENPL=ASC(Z$)-132:GOTO280
  55. 270 F=F+1:IFF=25THEN240
  56. 275 GOTO255
  57. 280 POKEV+21,0:CS(1)=0:CS(2)=0:SC(1)=0:SC(2)=0:NM(1)=3:NM(2)=3:CP=1:SC=0
  58. 285 ND(1)=0:ND(2)=0:C$="X X X ":GOSUB170:GOTO300
  59. 290 CS(CP)=CS(CP)+1:POKES+11,33:FORF=20TO100STEP10:POKES+8,F:FORE=1TO20
  60. 295 NEXTE,F:POKES+11,0:FORF=1TO2000:NEXT:POKEV+21,0
  61. 300 PRINTCHR$(147):F=CS(CP)/3:FORA=0TO7:POKE14672+A,0:NEXT:IFF>2THENF=2
  62. 305 ONF+1GOTO310,340,370
  63. 307 PRINT:PRINT" ";:U$="*":FORE=1TO37:PRINTU$;:NEXT:PRINT:RETURN
  64. 310 FORF=0TO7:IFF>0THENGOSUB307
  65. 316 U$=CHR$(174)+"*"+CHR$(176):FORE=1TO13:PRINTU$;:NEXT:PRINT
  66. 319 U$=CHR$(189)+"*"+CHR$(173):FORE=1TO13:PRINTU$;:NEXTE,F:BS(CP)=3:GOTO391
  67. 340 FORF=0TO5:IFF>0THENGOSUB307
  68. 346 U$=CHR$(174)+"*"+CHR$(176):FORE=1TO9:PRINTU$CHR$(192);:NEXT:PRINTU$
  69. 349 U$=CHR$(221)+"*"+CHR$(221):FORE=1TO9:PRINTU$" ";:NEXT:PRINTU$
  70. 352 U$=CHR$(189)+"*"+CHR$(173):FORE=1TO9:PRINTU$CHR$(192);:NEXT:PRINTU$;:NEXT
  71. 355 POKE214,4:PRINT:BS(CP)=4:E=4:GOTO394
  72. 370 FORF=0TO3:IFF>0THENGOSUB307
  73. 376 U$=CHR$(174)+"*"+CHR$(176)+CHR$(192)+CHR$(192)+CHR$(192):PRINTU$U$U$U$U$U$;
  74. 379 PRINTMID$(U$,1,3):FORE=0TO2
  75. 382 U$=CHR$(221)+"*"+CHR$(221)+"   ":PRINTU$U$U$U$U$U$;:PRINTMID$(U$,1,3):NEXT
  76. 388 U$=CHR$(189)+"*"+CHR$(173)+CHR$(192)+CHR$(192)+CHR$(192):PRINTU$U$U$U$U$U$;
  77. 389 PRINTMID$(U$,1,3);:NEXT:BS(CP)=6
  78. 391 POKE214,6:PRINT:E=2
  79. 394 U$=CHR$(192):PRINTTAB(14)CHR$(176)U$U$U$U$U$U$U$U$U$CHR$(174)
  80. 397 FORF=0TOE:U$=CHR$(221):PRINTTAB(14)U$"         "U$:NEXT:REM 9 SPACES
  81. 400 U$=CHR$(192):PRINTTAB(14)CHR$(173)U$U$U$U$U$U$U$U$U$CHR$(189)
  82. 412 BS=BS(CP):G=(CP-1)*11264:FORF=1063TO2023STEP40:POKEF+G,160:POKEF+S,11:NEXT
  83. 421 NN=24/BS*37+(36/BS+1)*24/BS*(BS-1)-46-18*(1-INT(BS/6)):NN(CP)=NN:ND=0
  84. 427 ND(CP)=0:POKE1523+G,32:FORA=1024TO1062:POKEA+G,0:POKEA+960+G,0:NEXT
  85. 430 FORA=1024TO1984STEPBS*40:POKEA+G,0:POKEA+38+G,0:NEXT:FORA=0TO2
  86. 433 F=INT(RND(1)*(917-BS*80))+1065+BS*40:IFPEEK(F+G)<>42THEN433
  87. 436 D=0:FORE=0TOA-1:B=ABS(B(CP,E)-F):C=B/40:IFB<40ORC=INT(B/40)THEND=1
  88. 438 NEXT:IFD=1THEN433
  89. 439 POKEF+G,91:B(CP,A)=F:NEXT:GOSUB140
  90. 440 F=CS(CP):F=F-INT((F)/6)*6:E=CC(F,0):A=9-F+INT((BS(CP)-4)/2)
  91. 441 IFCS(CP)>11THENA=5
  92. 442 POKE16860,A:POKE16757,A
  93. 444 POKE16641,7+44*(CP-1):POKE16683,1:POKE16679,127:POKE16680,176:SYS16640
  94. 445 FORA=0TO7:POKE14672+A,PEEK(15296+E*8+A):NEXT
  95. 447 F=CC(F,1):POKE16683,F:POKE16679,42:POKE16680,208:SYS16640
  96. 449 FORA=0TO2:POKEB(CP,A)+S,1:NEXT:IFPL=2THENGOSUB160:GOTO452
  97. 450 GOSUB165
  98. 452 POKE214,7:PRINT:PRINTTAB(17)"SCORE":IFBS(CP)=4THENPRINT
  99. 454 PRINTTAB(22-LEN(STR$(SC)))SC;CHR$(145)
  100. 456 POKEV+8,173:POKEV+9,142:POKEV+16,0:F=PEEK(53278)
  101. 459 FORF=0TO7:POKEF+17158,0:NEXT:FORF=10TO13:POKEV+F,0:NEXT
  102. 462 POKE17057,243:POKE17058,5+44*(CP-1):SYS17108:POKE17153,0
  103. 465 POKE2044+(CP-1)*11264,220:POKE251,0:POKE253,0:POKEV+21,112:GOTO10
  104. 500 POKE52,48:POKE56,48:CLR
  105. 503 BS=0:E=0:F=0:SC=0:ND=0:NN=0:V=53248:S=54272:DIMCC(6,1),B(2,2),A(31)
  106. 506 PRINTCHR$(147)CHR$(142)CHR$(8)CHR$(5):POKEV+32,11:POKEV+33,0
  107. 507 PRINT"[147]SETTING UP... PLEASE BE PATIENT!"
  108. 510 POKE56334,PEEK(56334)AND254:POKE1,PEEK(1)AND251:FORF=0TO2047
  109. 515 POKEF+14336,PEEK(F+53248):NEXT:POKE1,PEEK(1)OR4:POKE56334,PEEK(56334)OR1
  110. 520 POKE53272,(PEEK(53272)AND240)+14
  111. 525 REM *** COLOR FRUIT ON SCREEN ***
  112. 530 E=0:FORF=0TO47:READA:POKEF+16640,A:E=E+A:NEXT
  113. 535 IFE<>5305THENPRINT"ERROR IN DATA LINES 540-590":END
  114. 540 DATA 169,7,141,37,65,169,219,141,46
  115. 550 DATA 65,160,0,32,35,65,162,4,160
  116. 560 DATA 231,32,35,65,136,208,250,206
  117. 570 DATA 37,65,206,46,65,202,208,241,96
  118. 580 DATA 185,0,7,201,42,208,5,169,14
  119. 590 DATA 153,0,219,96
  120. 600 REM *** ARROW MOVEMENT ***
  121. 610 E=0:FORF=0TO147:READA:POKEF+16384,A:E=E+A:NEXT
  122. 615 IFE<>17648THENPRINT"ERROR IN DATA LINES 630-795":END
  123. 620 SYS 16384
  124. 630 DATA 173,21,3,201,64,240,24,120,173
  125. 640 DATA 20,3,141,146,64,173,21,3,141
  126. 650 DATA 147,64,169,32,141,20,3,169,64
  127. 660 DATA 141,21,3,88,96,165,251,16,45
  128. 670 DATA 41,63,170,206,12,208,208,8,173
  129. 680 DATA 16,208,73,64,141,16,208,165
  130. 690 DATA 251,41,64,133,206,173,16,208
  131. 700 DATA 41,64,197,206,208,11,173,12
  132. 710 DATA 208,197,252,208,4,134,251,240
  133. 720 DATA 3,202,208,214,165,253,16,20,41
  134. 730 DATA 63,170,206,11,208,173,11,208
  135. 740 DATA 197,254,208,4,134,253,240,3
  136. 750 DATA 202,208,239,173,30,208,44,83
  137. 760 DATA 64,240,19,141,1,67,162,127,44
  138. 770 DATA 21,64,240,2,134,253,44,124,64
  139. 780 DATA 240,2,134,251,165,2,240,9,198
  140. 790 DATA 2,208,5,169,0,141,4,212,76,49
  141. 795 DATA 234
  142. 800 REM *** SPRITE DATA ***
  143. 805 FORF=0TO583:POKEF+13760,0:NEXT
  144. 810 F=13824:FORC=0TO5:READB:FORE=0TOB
  145. 820 FORA=0TO1:READA(E*2+A)
  146. 830 POKEF,A(E*2+A):F=F+1:NEXT:F=F+1
  147. 840 NEXT:F=F+INT(B/5-1)*11:FORE=BTO0STEP-1
  148. 850 FORA=0TO1:POKEF,A(E*2+A):F=F+1:NEXT
  149. 860 F=F+1:NEXT:F=F+58-B*3*(INT((15-B)/8)+1):NEXT
  150. 870 DATA 5,3,131,15,135,30,15,56,30,120
  151. 880 DATA 252,255,252,5,193,192,225,240
  152. 890 DATA 240,120,120,28,63,30,63,255,15
  153. 900 DATA 6,0,15,0,31,128,63,192,127,224
  154. 910 DATA 102,96,230,112,198,48,207,48
  155. 920 DATA 15,0,15,0,31,128,63,192,127
  156. 930 DATA 224,240,240,224,112,6,1,69,1
  157. 940 DATA 69,0,68,0,68,36,84,36,84,213
  158. 950 DATA 85,6,81,64,81,64,17,0,17,0,21
  159. 960 DATA 24,21,24,85,86,15,3,0,3,0,9
  160. 970 DATA 128,9,128,5,64,5,64,65,4,65,4
  161. 980 DATA 85,84,85,84,5,64,5,64,85,84,85
  162. 990 DATA 84,65,4,65,4
  163. 1000 REM *** HORIZ. ARROW SETUP ***
  164. 1005 E=0:FORF=0TO88:READA:POKEF+16688,A:E=E+A:NEXT
  165. 1010 IFE<>10539THENPRINT"ERROR IN DATA LINES 1015-1120":END
  166. 1015 DATA 165,251,201
  167. 1020 DATA 127,176,72,173,9,67,240,14
  168. 1030 DATA 206,9,67,208,62,174,10,67,189
  169. 1040 DATA 127,65,133,251,96,169,48,141
  170. 1050 DATA 21,208,173,10,67,73,1,141,10
  171. 1060 DATA 67,170,189,129,65,141,39,64
  172. 1070 DATA 189,131,65,133,252,189,133,65
  173. 1080 DATA 141,12,208,189,135,65,141,254
  174. 1090 DATA 7,173,14,67,141,13,208,169,10
  175. 1100 DATA 141,9,67,169,112,141,21,208
  176. 1110 DATA 96,132,196,206,238,4,89,74,14
  177. 1120 DATA 216,217
  178. 1130 REM *** VERT. ARROW SETUP ***
  179. 1135 E=0:FORF=0TO93:READA:POKEF+16782,A:E=E+A:NEXT
  180. 1140 IFE<>11560THENPRINT"ERROR IN DATA LINES 1145-1260":END
  181. 1145 DATA 165,253
  182. 1150 DATA 201,127,176,81,173,11,67,240
  183. 1160 DATA 10,206,11,67,208,71,169,132
  184. 1170 DATA 133,253,96,169,80,141,21,208
  185. 1180 DATA 173,12,67,73,1,141,12,67,170
  186. 1190 DATA 189,129,65,141,88,64,189,230
  187. 1200 DATA 65,133,254,189,232,65,141,11
  188. 1210 DATA 208,189,234,65,141,253,7,173
  189. 1220 DATA 15,67,141,10,208,120,173,16
  190. 1230 DATA 208,41,223,13,16,67,141,16
  191. 1240 DATA 208,88,169,10,141,11,67,169
  192. 1250 DATA 112,141,21,208,96,30,254,244
  193. 1260 DATA 39,218,219
  194. 1270 REM *** PLAYER SPRITE MVMENT ***
  195. 1275 E=0:FORF=0TO223:READA:POKEF+16896,A:E=E+A:NEXT
  196. 1280 IFE<>23745THENPRINT"ERROR IN DATA LINES 1290-1415":END
  197. 1290 DATA 169,2,141,2,67,173,0,220,41
  198. 1295 DATA 15,10,10,170,160,3,189,0,68
  199. 1300 DATA 153,2,67,232,136,208,246,32
  200. 1305 DATA 164,66,141,0,67,201,32,240,36
  201. 1310 DATA 201,42,208,11,169,17,141,4
  202. 1315 DATA 212,169,5,133,2,208,21,32,212
  203. 1320 DATA 66,206,2,67,240,105,162,3,189
  204. 1325 DATA 5,67,157,2,67,202,208,247,240
  205. 1330 DATA 210,162,3,189,2,67,157,5,67
  206. 1335 DATA 202,208,247,173,3,67,141,252
  207. 1340 DATA 7,174,5,67,240,41,24,173,8
  208. 1345 DATA 208,125,24,67,141,8,208,173
  209. 1350 DATA 13,67,125,25,67,141,13,67,10
  210. 1355 DATA 10,10,10,141,29,67,120,173,16
  211. 1360 DATA 208,41,239,13,29,67,141,16
  212. 1365 DATA 208,88,16,13,24,174,4,67,189
  213. 1370 DATA 24,67,109,9,208,141,9,208,162
  214. 1375 DATA 2,189,185,66,157,160,66,202
  215. 1380 DATA 208,247,169,32,141,244,5,96
  216. 1385 DATA 174,5,67,240,5,32,192,66,208
  217. 1390 DATA 11,173,4,67,240,10,9,4,170,32
  218. 1395 DATA 192,66,173,244,5,96,169,0,96
  219. 1400 DATA 24,173,186,66,125,16,67,141
  220. 1405 DATA 186,66,173,187,66,125,17,67
  221. 1410 DATA 141,187,66,96,162,2,189,160
  222. 1415 DATA 66,157,185,66,202,208,247,96
  223. 1420 REM *** MVMENT & JYSTK DATA ***
  224. 1425 FORF=0TO11:READA:POKEF+17169,A:NEXT
  225. 1430 DATA 1,0,255,255,40,0,216,255,8,0
  226. 1440 DATA 248,255
  227. 1450 E=17427:FORF=0TO10:FORE=E+1TOE+2:READA:POKEE,A:NEXTE,F
  228. 1460 DATA 1,0,221,1,0,221,1,0,221,0,0,0
  229. 1470 DATA 3,0,220,3,0,220,3,0,220,0,0,0
  230. 1480 DATA 0,1,223,0,3,222,0,0,0
  231. 1500 REM *** FRUIT CHARACTERS ***
  232. 1503 FORF=0TO39:READA:POKEF+15296,A:NEXT
  233. 1505 DATA 0,60,102,102,126,126,60,0
  234. 1508 DATA 0,60,126,126,126,126,60,0,0
  235. 1510 DATA 32,96,112,120,62,30,0,0,54
  236. 1520 DATA 60,126,126,126,60,0,0,102,24
  237. 1530 DATA 126,126,60,24,0
  238. 1540 FORF=0TO5:READA,B:CC(F,0)=A:CC(F,1)=B:NEXT
  239. 1550 DATA 1,13,0,6,4,10,3,13,1,8,2,7
  240. 1590 FORF=0TO2:READA:FORE=0TO7:POKE13760+E*3+F,PEEK(14392+A*8+E):NEXTE,F
  241. 1600 DATA 16,14,0
  242. 1620 POKEV,164:POKEV+1,70:POKEV+28,16:POKEV+39,3:POKEV+43,1:POKEV+37,14
  243. 1625 POKEV+38,5:POKEV+44,7:POKEV+45,7:POKEV+23,0:POKEV+29,0:POKE2040,215
  244. 1630 FORE=0TO24:POKES+E,0:NEXT:POKES,31:POKES+1,21:POKES+6,240
  245. 1640 POKES+13,240:POKES+24,15:GOTO200
  246.